#ifndef TANK_H
#define TANK_H

#include <CommonClass.h>
#include "TankShell.h"

class TankShell;
class Tank : public CSprite
{
    public:
        Tank(const char* szName);
        virtual ~Tank();

        int getHP();    // 获取坦克生命值
        void setHP(int _HP); // 根据参数设置坦克生命值

        int getInitX();     // 获取坦克的初始x坐标
        void setInitX(int _initX); //设置坦克的初始x坐标

        int getInitY();     // 设置坦克初始Y坐标
        void setInitY(int _initY);    // 设置坦克初始Y坐标

        float getSpeedX();  // 获得坦克的X轴移动速度
        void setSpeedX(float _speedX);   // 设置坦克的X轴移动速度

        float getSpeedY();  // 获取坦克的Y轴移动速度
        void setSpeedY(float _speedY);   // 设置坦克的Y轴移动速度

        int getDirection();     // 获取坦克方向
        void setDirection(int _direction);   // 设置坦克移动方向

        float getCountShellTime();  // 获取坦克射击的冷却时间
        void setCountShellTime(float _countShellTime);   // 设置坦克射击的冷却时间

        float getFiringFreQuency(); // 获取坦克射击频率
        void setFiringFreQuency(float _firingFreQuency);     // 设置坦克射击频率

        TankShell* getTs();     // 获取坦克身上的子弹
        void setTs(TankShell* _ts);  // 设置坦克身上子弹

        virtual void move(int iKey) = 0;    //  坦克移动方法
        virtual void shooting() = 0;    // 坦克射击方法


    protected:
        TankShell*  ts;     //坦克身上携带的炮弹

    private:
        int     HP;     // 坦克生命值
        int     initX;  // 坦克当前位置中心点的X坐标
        int     initY;  // 坦克当前位置中心点的Y坐标
        float   speedX; // 坦克X轴方向移动速度
        float   speedY; // 坦克y轴方向移动速度
        int     direction;  // 坦克当前的方向
        float   countShellTime;     // 发射炮弹后的冷却时间
        float   firingFreQuency;    // 坦克射击频率

};

#endif // TANK_H
